JWT (JSON Web Token) একটি ওপেন স্ট্যান্ডার্ড যা ক্লাইন্ট এবং সার্ভারের মধ্যে নিরাপদে তথ্য বিনিময় করতে ব্যবহৃত হয়। এটি সাধারণত Authentication এবং Authorization প্রক্রিয়ার জন্য ব্যবহৃত হয়। JWT টোকেন একটি এনক্রিপ্টেড বা সিগনেচার করা স্ট্রিং যা টোকেনের ভিতরে কিছু গুরুত্বপূর্ণ তথ্য ধারণ করে, যেমন ব্যবহারকারীর পরিচয় এবং তাদের অ্যাক্সেসের অনুমতি।
JWT ব্যবহার করার মাধ্যমে, একবার ব্যবহারকারী লগইন করলে, সার্ভার একটি JWT টোকেন জেনারেট করে এবং ব্যবহারকারীকে পাঠিয়ে দেয়, যা পরে পরবর্তী প্রতিটি রিকোয়েস্টের সঙ্গে ক্লাইন্ট দ্বারা সার্ভারে পাঠানো হয়। সার্ভার এই টোকেন যাচাই করে ব্যবহারকারীর পরিচয় নিশ্চিত করে এবং সঠিকভাবে এক্সেস প্রদান করে।
একটি JWT টোকেন তিনটি প্রধান অংশে বিভক্ত থাকে:
উদাহরণ:
{
"alg": "HS256",
"typ": "JWT"
}
উদাহরণ:
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
"sub"
হল subject (ব্যবহারকারীর ID), "name"
ব্যবহারকারীর নাম এবং "iat"
হল "issued at" টাইমস্ট্যাম্প।উদাহরণ:
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
JWT একটি বেস64 এন্কোডেড স্ট্রিং হিসেবে তিনটি অংশে বিভক্ত হয়ে থাকে, এবং সাধারণত এটি এইরকম দেখায়:
header.payload.signature
উদাহরণ:
Authorization: Bearer <token>
ASP.NET Core অ্যাপ্লিকেশনে JWT Authentication সেটআপ করার জন্য আপনাকে কিছু নির্দিষ্ট স্টেপ অনুসরণ করতে হবে:
Install NuGet Packages:
Microsoft.AspNetCore.Authentication.JwtBearer
প্যাকেজ ইনস্টল করুন।dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer
Configure JWT Authentication in Startup.cs:
Startup.cs
ফাইলে Authentication মেথড কনফিগার করুন:public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "yourIssuer",
ValidAudience = "yourAudience",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("yourSecretKey"))
};
});
}
Generate JWT Token:
public string GenerateJWT(User user)
{
var claims = new[]
{
new Claim(JwtRegisteredClaimNames.Sub, user.UserId.ToString()),
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
};
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("yourSecretKey"));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(
issuer: "yourIssuer",
audience: "yourAudience",
claims: claims,
expires: DateTime.Now.AddMinutes(30),
signingCredentials: creds);
return new JwtSecurityTokenHandler().WriteToken(token);
}
JWT (JSON Web Token) হল একটি স্ট্যান্ডার্ড যা নিরাপদ এবং স্টেটলেস অথেন্টিকেশন সিস্টেম তৈরির জন্য ব্যবহৃত হয়। এটি ক্লাইন্ট এবং সার্ভারের মধ্যে ডেটা আদান-প্রদান সহজতর করে এবং নিরাপত্তা নিশ্চিত করে। JWT সার্ভারের উপর কোনো স্টেট ধারণ করে না, ফলে এটি বেশি স্কেলেবল এবং ফাস্ট। ASP.NET Core অ্যাপ্লিকেশনে JWT Authentication সেটআপ করতে কিছু নির্দিষ্ট কনফিগারেশন এবং কোড প্রয়োজন, যা সার্ভারের উপর ব্যবহারকারীর অ্যাক্সেস কন্ট্রোল এবং সুরক্ষা নিশ্চিত করে।
common.read_more